<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <input type="text">
</body>
<script>
    // 1、正则：用事先定义好的一些特定字符、及这些特定字符的组合，组成一个“规则字符串”
    // 2、正则的组成： 特殊字符 元字符 限定符 其他字符
    // 3、如何创建正则： 字面量：let reg = /特定字符or特定字符的组合/ 构造函数：new RegExp(/特定字符or特定字符的组合/)
    // 4、正则的作用：匹配 提取 替换
    // 5、正则的使用：reg.test(需要验证的字符串)
</script>
<script>
    // 元字符
    // 匹配至少有一个数字  \d
    // let reg = /\d/
    // console.log(reg.constructor);
    // let reg = new RegExp(/\d/)
    // onchange 输入框改变后，失去焦点 触发
    document.getElementsByTagName('input')[0].onchange = function () {
        console.log(this.value);
        console.log(reg.test(this.value));
    }
    // 匹配至少任意一个非数字的字符 \D
    var reg = /\D/
    var str = '123123'
    var str1 = '123123a'
    var str2 = 'asfasda'
    console.log(reg.test(str));
    console.log(reg.test(str1));
    console.log(reg.test(str2));
    // \w  匹配至少一个字母或数字或下划线
    var reg = /\w/
    var str = '1'
    var str1 = '#$#$^&#'
    console.log(reg.test(str));
    console.log(reg.test(str1));
    // ^ 表示匹配行首的文本(以谁开始)
    var reg = /^\d/
    console.log(reg.test('123123asdas'));
    console.log(reg.test('asdadsa123213123123asdas'));
    // $ 表示匹配行尾的文本(以谁结束)
    var reg = /\d$/
</script>
<script>
    // 限定符
    // * 重复零次或更多次\d*  /^ab*$/：表示一个字符串有一个a后面跟着零个或若干个b。（"a", "ab", "abbb",……）；
    var reg = /^\ab*$/
    var str = 'abbb'
    console.log(reg.test(str));
    // + 重复一次或更多次\d+     / ab+/：表示一个字符串有一个a后面跟着至少一个b或者更多；
    var reg = /^ab+$/
    console.log(reg.test('abb'));
    // ? 重复零次或一次    /^ab?$/：表示一个字符串有一个a后面跟着零个或者一个b；
    var reg = /^ab?$/
    var reg = /^\d{1,4}(-)(1[0-2]|0?[1-9])\1(0?[1-9]|[1-2]\d|30|31)$/
    var reg = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/
    // 至少重复n次 {n}
    var reg = /^ab{4}$/
    console.log(reg.test('abbbb'));
    console.log(reg.test('abbbbb'));
    // 重复n次或更多次 {n,}
    var reg = /^ab{4,}$/
    console.log(reg.test('abbbb'));
    console.log(reg.test('abbbbb'));
    // 重复n到m次 {n,m}
</script>
<!-- 其他字符 -->

<script>
    // [] 字符串用中括号括起来，表示匹配其中的任一字符，相当于或的意思[0 - 9]
    var reg = /[0-9]/
    console.log(reg.test('0'));
    console.log(reg.test('10'));
    // | 或者，选择两者中的一个。注意|将左右两边分为两部分，而不管左右两边有多长多乱
    var reg = /[0-9]|[a-z]|[A-Z]/
    console.log(reg.test('哈哈'));
    console.log(reg.test('a'));
    console.log(reg.test('1231'));
    console.log(reg.test('123112asdasA'));
    console.log(reg.test('AGHJASKJDH'));
    var reg =  /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
</script>

</html>